import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class demo1 {
    class Solution {
            boolean[]flag;
            List<List<Integer>>lists;
            List<Integer>list;
            int sum;
            public List<List<Integer>> permuteUnique(int[] nums) {
                int n=nums.length;
                flag=new boolean[n];
                list=new ArrayList<>();
                sum=n;
                Arrays.sort(nums);
                lists=new ArrayList<>();
                dfs(nums,0);
                return lists;
            }
            public void dfs(int[]nums,int ps){
                if(ps==nums.length){
                    lists.add(new ArrayList<>(list));
                    return;
                }
                for(int i=0;i<nums.length;i++){
                    if(flag[i]=false&&(i==0||(nums[i]!=nums[i-1]||flag[i-1]!=false))){
                        flag[i]=true;
                        list.add(nums[i]);
                        dfs(nums,ps+1);
                        flag[i]=false;
                        list.remove(list.size()-1);
                        c
                    }
                }
            }
        }

}
